# -*- coding: utf-8 -*-
#python 文件I/O

#open函数 必须先用内置对象open()打开一个文件，创建一个file对象,相关的方法才可以调用它进行读写
"""
语法:file=open(file_name [, access_mode][, buffering])
各个参数的细节如下：
file_name：file_name变量是一个包含了你要访问的文件名称的字符串值。
access_mode：access_mode决定了打开文件的模式：只读，写入，追加等。所有可取值见如下的完全列表。这个参数是非强制的，默认文件访问模式为只读(r)。
buffering:如果buffering的值被设为0，就不会有寄存。如果buffering的值取1，访问文件时会寄存行。如果将buffering的值设为大于1的整数，表明了这就是的寄存区的缓冲大小。如果取负值，寄存区的缓冲大小则为系统默认。

****不同模式打开文件的完全列表：http://www.runoob.com/python/python-files-io.html
"""

# 打开一个文件  
 
# 对象属性
"""
fo = open("foo.txt",'wb')
print "文件名: ", fo.name
print "是否已关闭 : ", fo.closed
print "访问模式 : ", fo.mode
print "末尾是否强制加空格 : ", fo.softspace
"""

# 对象方法

#(1)close()   关闭该文件，这之后便不能再进行写入。
def demo1(file):
	fo=open(file,'wb')
	print fo.name
	fo.close()

#(2)write()  可以将任何字符串( 二进制数据)写入一个打开的文件。 write方法不会在字符串结尾加\n

def demo2(file):
	fo=open(file,'wb')
	fo.write('this is a bird.')
	print 'save success'
	fo.close  #这个方法会创建一个foo.txt文件，并且在这个文件写入this is a bird.

#(3)read(count) 方法从一个打开的文件中读取一个字符串。count参数为光标的位置向后读取的数量
def demo3(file):
	fo=open(file,'r+')
	str=fo.read()   # str=fo.read(10) 向后读10位
	print str
	fo.close()
	
#(4)tell() 查找当前位置
def demo4(fill):
	fo=open(fill,'r')
	str=fo.read()
	print str
	# 查找当前位置
	position=fo.tell() 
	print position
	# 把指针再次重新定位到文件开头
	fo.seek(0,0)
	str1=fo.read()
	print str1 
	

#重命名和删除文件  Python的os模块提供了帮你执行文件处理操作的方法，比如重命名和删除文件。
#(1)重命名文件    rename(curr_fill_name,new_fill_name)
import  os
def replace_fillName(curr_name,new_name):
	os.rename(curr_name,new_name)
	print 'replace_fillName success'
#(2)删除文件  remove(fillName)
def remove_fill(fillName):
	os.remove(fillName)
	
#(3)当前文件创建新的目录  mkdir()方法
def create(new_fill):
	os.mkdir(new_fill)	
	print 'create new_fill success'	

#(4)改变当前的目录,chdir()方法需要的一个参数是你想设成当前目录的名称
def change_dir(ch_dir):
	os.chdir("/home/new_fill") #将进入/home/new_fill目录
	print os.getcwd()  #显示当前的工作目录
#(5)删除目录  rmdir()方法删除目录，目录名称以参数传递。 在删除这个目录之前，它的所有内容应该先被清除。
# 删除”/tmp/test”目录     os.rmdir( "/tmp/test"  )	

#fill 的其他一些方法    
#readline()   next()  readlines()


#readline()  读一行	
#readline(5) 读第一行的5个字节	
#next()      下一行	
#readlines() 读取所有的行，返回一个列表[1column,2column,...]
	
	
	
	
	
	
	
	
	


